iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 30
0
自我挑戰組

Swift - 來吧!鐵人三十項系列 第 30

Day30:完賽不是結束,死掉才是 - TapCounterPlus

  • 分享至 

  • xImage
  •  

前前言

嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第三十篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。


前言

標題好像有點聳動

但也正是我想表達的,從小到大,你經歷了無數個結束,例如:幼稚園畢業、小學畢業、國中畢業、高中畢業、大學畢業、研究所畢業、博士畢業、基測結束、學測結束、指考結束、研究所考試結束、面試結束等等,都是所謂的形式上的結束,相信有很多人都會告訴你,這只是一個階段的結束,你還是要繼續學習。

沒錯,鐵人賽的結束也是一樣的道理,更何況各位身為軟體工程師,就已經背負著終身學習的包袱,故今天繼續來寫點小東西吧 XD


目標 - TapCounterPlus

大家在新手階段普遍都會做過一個東西,叫作 TapCounter
就是一個數字和一個按鈕,你按下按鈕後會一直增加那個數字

因應鐵人賽結束的倒數,來幫它加上一個倒數計時的小機制吧:


連結程式碼、enum、初始值

先將畫面上的分數、時間、按鈕連結到程式碼上:

將 Tap 及 Reset 的 IBAction 拉好:

因應遊戲機制設置兩種不同狀態(做的事情不同)

設置初始值、初始狀態、Timer:


倒數計時

實作倒數計時 @objc func:

  • 每秒減一
  • 零秒就停止倒數
  • 零秒彈出結果得分、讓 Tap 按鈕不能按

將其放入 scheduledTimer 中、區間為 1、重複:


遊戲機制 - TapButton

遊戲狀態分為未開始、遊戲中

未開始狀態按下去後:

  • 分數 +1
  • 開始倒數計時
  • 將遊戲狀態改為遊戲中

遊戲中狀態按下去後:

  • 分數 +1


遊戲機制 - Reset

按下 Reset 後,將分數重設為 0、時間重設為 5、停止倒數、遊戲狀態設為未開始、Tap 按鈕恢復成可以按:


Demo

完整程式碼可以參考我的 GitHub
最後恭喜大家順利完賽,YA。


上一篇
Day29:本地推播通知 - Local UserNotification(2)
系列文
Swift - 來吧!鐵人三十項30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Howard
iT邦新手 4 級 ‧ 2019-10-16 22:05:56

賀完賽/images/emoticon/emoticon64.gif

我要留言

立即登入留言